package com.fengkong.analysis.simple;

import java.util.Objects;

/**
 * @description 做一个工具类，主要处理解析过程中的常用的方法处理
 * @Author longdeng
 * @Date 2020/7/28 0028 23:50
 */
public class AnalyisUtil {

    /**
     * 处理空字符串过程
     *
     * @param value         待处理的字符串
     * @param defaultString 默认字符串处理
     * @return
     */
    public static String emptyString(String value, String defaultString) {
        // 如果是null或者空字符串，那么判断defalutString是否设置了值
        if (Objects.isNull(value) || "".equals(value)) {
            if (Objects.isNull(defaultString) || "".equals(defaultString)) {
                return null;
            } else {
                return defaultString;
            }
        }
        return value;
    }

    /**
     * 处理空字符串过程
     *
     * @param value 待处理的字符串
     * @return
     */
    public static String emptyString(String value) {
        return emptyString(value, null);
    }

    /**
     * 处理空字符串过程
     *
     * @param value 待处理的字符串
     * @return
     */
    public static String emptyString(Object value) {
        if (value instanceof String) {
            return emptyString((String) value, null);
        } else {
//            System.out.println("当前传入的对象["+value+"]不是String类型的");
            return null;
        }
    }


    /**
     * 统计目标字符串在源字符串中出现的次数
     *
     * @param source 源字符串
     * @param target 目标字符串
     * @return
     */
    public static int stringCount(String source, String target) {
        if (Objects.isNull(source)) {
            throw new RuntimeException("源字符串[" + source + "]不能是null对象,抛出异常的类AnalyisUtil 方法:stringCount");
        }
        if (Objects.isNull(target)) {
            throw new RuntimeException("目标字符串[" + target + "]不能是null对象,抛出异常的类AnalyisUtil 方法:stringCount");
        }
        int count = 0;
        int start = 0;
        while (source.indexOf(target, start) >= 0 && start < source.length()) {
            count++;
            start = source.indexOf(target, start) + target.length();
        }
        return count;
    }


}
